Ana içeriğe geç

Deno Nedir?

Deno, Node.js'in yaratıcısı Ryan Dahl tarafından geliştirilmiş, modern ve güvenli bir JavaScript/TypeScript çalışma zamanıdır. Rust ile yazılmış ve V8 motorunu kullanan Deno, güvenliği ve performansı ön planda tutar.

// Temel Deno Uygulaması
// server.ts
import { serve } from "https://deno.land/std/http/server.ts";

const handler = (req: Request): Response => {
return new Response("Merhaba Deno!", {
headers: { "content-type": "text/plain" },
});
};

await serve(handler, { port: 8000 });

// Dosya işlemleri örneği
const text = await Deno.readTextFile("./data.txt");
console.log(text);

// Permissions örneği
const cmd = new Deno.Command("echo", {
args: ["Merhaba, Deno!"],
});
const output = await cmd.output();

ipucu

Deno'yu sisteminize kurmak için: curl -fsSL https://deno.land/x/install/install.sh | sh komutunu kullanabilirsiniz.

Temel Özellikler

  • Yerleşik TypeScript desteği
  • URL tabanlı modül sistemi
  • Güvenlik öncelikli tasarım
  • Modern Web API'leri desteği
  • Yerleşik test araçları
  • Tek bir çalıştırılabilir dosya

Önemli Nokta: Deno, güvenliği varsayılan olarak sağlar ve tüm sistem erişimleri için açık izin gerektirir. — Deno Dokümantasyonu


Güvenlik Özellikleri

  1. İzin Sistemi

    # Ağ erişimi için
    deno run --allow-net server.ts

    # Dosya sistemi erişimi için
    deno run --allow-read data.ts

    # Çevre değişkenleri için
    deno run --allow-env app.ts
  2. Sandboxing

    • İzinsiz dosya erişimi yok
    • İzinsiz ağ erişimi yok
    • İzinsiz çevre değişkeni erişimi yok
bilgi

Deno'nun güvenlik modeli, uygulamaların yalnızca açıkça izin verilen kaynaklara erişebilmesini sağlar.

Modül Sistemi

// URL tabanlı import
import { serve } from "https://deno.land/std@0.177.0/http/server.ts";

// Local modül import
import { Config } from "./config.ts";

// npm paketlerini kullanma
import express from "npm:express@4.18.2";
tehlike

URL tabanlı modül sistemi, bağımlılıkların her zaman erişilebilir olmasını gerektirir.


Deno vs Node.js

  1. Avantajlar

    • Modern JavaScript desteği
    • Yerleşik TypeScript desteği
    • Güvenlik odaklı tasarım
    • Daha iyi standart kütüphane
    • WebAssembly desteği
  2. Dezavantajlar

    • Daha küçük ekosistem
    • Node.js uyumsuzluğu
    • Öğrenme eğrisi

Deno CLI Araçları

# Uygulama çalıştırma
deno run app.ts

# Test çalıştırma
deno test

# Bağımlılıkları denetleme
deno info app.ts

# Kod formatlama
deno fmt

# Lint kontrolü
deno lint

En İyi Uygulamalar

  1. Proje Yapısı

    ├── src/
    │ ├── main.ts
    │ └── deps.ts
    ├── tests/
    │ └── main_test.ts
    ├── deno.json
    └── import_map.json
  2. Bağımlılık Yönetimi

    // import_map.json
    {
    "imports": {
    "std/": "https://deno.land/std@0.177.0/",
    "oak": "https://deno.land/x/oak@v11.1.0/mod.ts"
    }
    }
  3. Test Yazımı

    import { assertEquals } from "https://deno.land/std/testing/asserts.ts";

    Deno.test("temel test", () => {
    assertEquals(2 + 2, 4);
    });
bilgi

Deno'nun standart kütüphanesi, birçok yaygın işlev için hazır çözümler sunar.


Kullanım Alanları

  • Web sunucuları
  • CLI uygulamaları
  • Mikroservisler
  • Scripting
  • Edge computing
  • WebAssembly uygulamaları

Özetle, Deno, modern web geliştirme için güvenli, hızlı ve TypeScript odaklı bir platform sunar. Node.js'in bazı tasarım kararlarını iyileştirerek, daha güvenli ve modern bir geliştirme deneyimi sağlar. Özellikle güvenliğin önemli olduğu projelerde ve TypeScript kullanılan uygulamalarda tercih edilebilecek güçlü bir alternatiftir.